package serova.valeriya.electricity;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

public class TariffDataSource {
	private static final Logger LOGGER = Logger.getLogger(TariffDataSource.class);

	public static InputStreamReader getInputStreamReaderURL(String adress) {
		InputStreamReader stream = null;
		try {
			URL url = new URL(adress);
			stream = new InputStreamReader(url.openStream());
		} catch (MalformedURLException e) {
			LOGGER.error("Некорректный формат URL", e);
			UserDialog.printErrorMessage("Некорректный формат URL");
		} catch (UnknownHostException e) {
			LOGGER.error("URL не существует", e);
			UserDialog.printErrorMessage("URL не существует");
		} catch (IOException e) {
			LOGGER.error("Файл содержит некорректные данные", e);
			UserDialog.printErrorMessage("Файл содержит некорректные данные");
		}
		return stream;
	}

	public static InputStreamReader getInputStreamReader(String fileName) {
		InputStreamReader stream = null;
		try {
			File file = new File(fileName);
			FileInputStream fin = new FileInputStream(file);
			stream = new InputStreamReader(fin);
		} catch (FileNotFoundException e) {
			LOGGER.error("Ошибка источника данных. Категория в файле не найдена", e);
			UserDialog.printErrorMessage("Ошибка источника данных. Категория в файле не найдена" + e);
		}
		return stream;
	}

	public static List <String> getFileInformation(InputStreamReader stream) {
		String line;
		List <String> fileContent = new ArrayList <String>();
		try {
			BufferedReader reader = new BufferedReader(stream);
			while ((line = reader.readLine()) != null) {
				fileContent.add(line);
			}
			reader.close();
		} catch (IOException e) {
			LOGGER.error("Ошибка чтения. Данные в файле некорректны.", e);
			UserDialog.printErrorMessage("Ошибка чтения. Данные в файле некорректны. " + e);
		}
		return fileContent;
	}
}
